home *** CD-ROM | disk | FTP | other *** search
/ Aminet 30 / Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso / Aminet / dev / c / flash-0.4.3.lha / flash-0.4.3 / Lib / button.h < prev    next >
C/C++ Source or Header  |  1999-02-21  |  2KB  |  96 lines

  1. /////////////////////////////////////////////////////////////
  2. // Flash Plugin and Player
  3. // Copyright (C) 1998 Olivier Debon
  4. // 
  5. // This program is free software; you can redistribute it and/or
  6. // modify it under the terms of the GNU General Public License
  7. // as published by the Free Software Foundation; either version 2
  8. // of the License, or (at your option) any later version.
  9. // 
  10. // This program is distributed in the hope that it will be useful,
  11. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13. // GNU General Public License for more details.
  14. // 
  15. // You should have received a copy of the GNU General Public License
  16. // along with this program; if not, write to the Free Software
  17. // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  18. // 
  19. ///////////////////////////////////////////////////////////////
  20. #ifndef _BUTTON_H_
  21. #define _BUTTON_H_
  22.  
  23. #ifdef DUMP
  24. #include "bitstream.h"
  25. #endif
  26.  
  27. #include "character.h"
  28. #include "shape.h"
  29. #include "sound.h"
  30.  
  31. struct ButtonRecord {
  32.     ButtonState         state;
  33.     Character        *character;
  34.     long             layer;
  35.     Matrix             buttonMatrix;
  36.     Cxform            *cxform;
  37.  
  38.     struct ButtonRecord    *next;
  39. };
  40.  
  41. struct Condition {
  42.     long             transition;
  43.     ActionRecord        *actions;
  44.  
  45.     Condition        *next;
  46. };
  47.  
  48. class Button : public Character {
  49.  
  50.     long             defLevel;
  51.  
  52.     ButtonRecord        *buttonRecords;
  53.     ActionRecord        *actionRecords;
  54.     Condition        *conditionList;
  55.  
  56.     long             isMenu;
  57.  
  58.     ButtonState         currentState;
  59.     ButtonState         renderState;
  60.     ButtonState         oldState;
  61.  
  62.     Sound            *sound[4];
  63.  
  64. public:
  65.     Button(long id, int level = 1);
  66.     ~Button();
  67.     void         addActionRecord( ActionRecord *ar );
  68.         void         addButtonRecord( ButtonRecord *br );
  69.     void         addCondition( long transition );
  70.     int         execute(GraphicDevice *, Matrix *, Cxform *);
  71.     ActionRecord    *eventHandler(GraphicDevice *, FlashEvent *);
  72.     void         reset();
  73.     ActionRecord    *getActionFromTransition(ButtonState);
  74.     void         getRegion(GraphicDevice *, Matrix *matrix, unsigned char id);
  75.     ButtonRecord    *getButtonRecords();
  76.     void         setButtonSound(Sound *, int);
  77.     void         setButtonMenu(int);
  78.  
  79.     ActionRecord    *getActionRecords();
  80.     Condition    *getConditionList();
  81.     Sound           **getSounds();
  82.  
  83.     // Builtin
  84.     int     hasEventHandler() {
  85.         return 1;
  86.     };
  87.  
  88. #ifdef DUMP
  89.     void         dump(BitStream *);
  90.     void         dumpButtonRecords(BitStream *, int putCxform = 0);
  91.     void         dumpButtonConditions(BitStream *);
  92. #endif
  93. };
  94.  
  95. #endif /* _BUTTON_H_ */
  96.